package com.xian.d1_collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

/**
 * 目标:明确Collection集合体系的特点
 *
 * 1、数组和集合的元素存储的个数问题。
 * 数组定义后类型确定，长度固定

 * 2、数组和集合存储元素的类型问题。
 * 数组可以存储基本类型和引用类型的数据。
 * ●集合只能存储引用数据类型的数据。
 *
 * 3、数组和集合适合的场景
 * ·数组适合做数据个数和类型确定的场景。
 * 集合适合做数据个数不确定，且要做增删元素的场景。
 *
 * 1、集合的代表是?
 * collection接口。
 *
 * 2、Collection集合分了哪2大常用的集合体系?
 * List系列集合:添加的元素是有序、可重复、有索引。
 * Set系列集合:添加的元素是无序、不重复、无索引。
 *
 * 3、如何约定集合存储数据的类型，需要注意什么?
 * ●集合支持泛型。
 * ●集合和泛型不支持基本类型，只支持引用数据类型。
 */
public class CollectionDemo1 {
    public static void main(String[] args) {
        //有序  可重复  有索引
        Collection list = new ArrayList();  //多态形式
        list.add("Java");
        list.add("Java");
        list.add("Python");
        list.add(12345);
        list.add(false);

        System.out.println(list);

        // 无序   不重复  无索引
        Collection list1 = new HashSet();  //多态形式
        list1.add("Java");
        list1.add("Java");
        list1.add("Python");
        list1.add(12345);
        list1.add(false);
        list1.add("mybatis");

        System.out.println(list1);


        System.out.println("---------------------------");
        /**
         * 集合对于泛型的支持
         * ·集合都是支持泛型的，可以在编译阶段约束集合只能操作某种数据类型
         * collection<String> lists = new ArrayList<string>();
         * collection<String> lists = new ArrayList<>(); // JDK1.7开始后面的泛型类型申明可以省略不写
         *
         * 注意:集合和泛型都只能支持引用数据类型，不支持基本数据类型，所以集合中存储的元素都认为是对象。
         * collection<int> lists = new ArrayList<>();
         *
         * 如果集合中要存储基本类型的数据怎么办?
         * //存储基本类型使用包装类
         * Collection<Integer> lists = new ArrayList<>();
         * collection<Double> lists = new ArrayList<>();
         */
        Collection<String> list2 = new ArrayList<>();  // JDK1.7开始后面的泛型类型申明可以省略不写
        list2.add("Java");
        list2.add("Python");



    }
}
